地图标注
最后更新时间:2019年7月5日
添加固定点标注,即已知要标注点的位置信息与其他属性,可以直接在程序中处理并添加,在地图上叠加显示标注点。
//坐标点:作为标注位置 MGSDot dot=MGSDotMake(12735780.301316,3563458.653495); //图像:作为标注的图标 UIImage *image=[UIImage imageNamed:@"annotation"]; //实例化标注对象(参数:名称、描述、位置点、图标) MGSAnnotation *annotation=[[MGSAnnotation alloc] initAnnotationWithTitle:@"标注" description:@"Annotation" point:dot image:image]; //获取地图容器的标注图层,并向其中添加标注 [_mapView.annotationsOverlay addAnnotation:annotation]; //刷新地图 [_mapView refresh];
交互添加标注,即通过用户交互操作(如单击、双击、长按等)获取位置点来添加标注。交互添加标注实现的方法与添加固定点标注的方法唯一不同的是位置点的获取途径,其他完全一致,实现思路如下:
(1) 实现手势事件监听:为地图视图设置代理,实现其手势事件的回调函数,如单击手势监听回调;
(2) 捕获、转换坐标:在单击事件监听的回调方法中捕获当前操作的屏幕坐标点,转换为地图坐标。
(3) 添加标注:根据捕获到的单击坐标点等信息创建标注对象,添加到标注图层中绘制显示。
核心实现代码如下所示:
@interface InteractiveAnnotation_ViewController ()<MapViewDelegate> //设置代理 [_mapView setDelegate:self];
//地图单击事件监听 -(void)tapWithPoint:(CGPoint)viewPoint mapView:(MGSMapView *)mapView { //创建标注需要的信息 MGSDot dot=[mapView viewPointToMapPoint:viewPoint]; //将点击的视图坐标转换为地图坐标 UIImage *image=[UIImage imageNamed:@"location"]; //根据信息创建地图标注 MGSAnnotation *annotation=[[MGSAnnotation alloc] initAnnotationWithTitle:@"标注" description:@"Annotation" point:dot image:image]; //添加标注到标注图层 [mapView.annotationsOverlay addAnnotation:annotation]; [mapView refresh]; }
代码说明:通过地图的手势操作,在其事件监听中捕捉到的坐标为屏幕坐标,要将其转换为地图坐标后使用。
地图标注展示效果如下: